Install
npm install ip-cidr
About
Module for working with CIDR (v4, v6). Based on ip-address.
Example
const IPCIDR = require("ip-cidr");
const BigInteger = require("jsbn").BigInteger;
const cidr = new IPCIDR("50.165.190.0/23");
if(!cidr.isValid()) {
throw new Error('CIDR is invalid');
}
cidr.start();
cidr.end({ type: "bigInteger" });
cidr.loop(ip => console.log(ip), { type: "addressObject" });
cidr.toArray({ type: "bigInteger" });
cidr.toArray({ from: 1, limit: new BigInteger('2') });
cidr.toArray({ from: new BigInteger('1'), to: 3 });
cidr.toArray({ from: '50.165.190.1', to: '50.165.190.3' });
cidr.toRange();
Client side
Load /dist/ip-cidr.js as a script and you can get the library in window.IPCIDR
API
.formatIP(address, [options])
to return an "ip-address" module object in the necessary format
.contains(address)
to check the address belongs to the range
.start([options])
to get the start ip adress
.end([options])
to get the end ip address
.toString()
to convert the cidr to a string like "50.165.190.0/23"
.toRange([options])
to convert the cidr to an array with start and end ip addresses [startIp, endIp]
.toObject([options])
to convert the cidr to an object with start and end ip addresses {start: startIp, end: endIp}
.toArray([options], [results])
to convert the cidr to an array with all ip addresses in the range
you can get information by chunks using options.from/options.limit or options.from/options.to
you can pass the second argument "results" (object) to get all chunk pagination information
.loop(fn, [options], [results])
to run fn for each element of the range
you can use the same chunk options as in .toArray()